#pragma once
#include <list>
namespace Level2
{
	class VirtulMachine
	{
		unsigned __int64* registers;
		class StackList
		{
		public:
			StackList(size_t size);
			size_t maxSize;
			unsigned __int64* stackTop, * RSP;
		};
		std::list<StackList> stack;
	public:
		enum class VirtualMachineCode
		{
			NOP,
			ADD,
			ADC,
			SUB,
			SBB,
			MUL,
			IMUL,
			DIV,
			IDIV,
			AND,
			OR,
			NOT,
			XOR,
			NEG,
			CMP,
			JUMP,
			CRASH
		};
		bool Execute1Instruction(void**);
	};
}